package com.sinai.mshab.data;

import com.google.gwt.user.client.ui.Widget;

/**
 * A {@code DataManagerCollection} contains a number of {@link DataManager}s
 * and can return an appropriate {@code DataManager} for specific {@link Widget}s.
 * 
 * @author Arthur Kalmenson
 */
public interface DataManagerCollection {

	/**
	 * Returns true if there is a {@link DataManager} for the given
	 * {@link Widget} and false otherwise.
	 * 
	 * @param widget
	 *            the {@code Widget} to check.
	 * @return true if there is a {@code DataManager} for the given
	 *         {@code Widget} and false otherwise.
	 */
	public boolean hasDataManager(Widget widget);

	/**
	 * Returns the {@link DataManager} that is associated with {@code widget}.
	 * 
	 * @param widget
	 *            the {@link Widget} who's {@code DataManager} we want.
	 * @return the {@code DataManager} that is associated with {@code widget}.
	 */
	public DataManager<?, ?> getDataManager(Widget widget);
}
